package com.zjdiepu.www.ibiz.third;

import java.util.List;
import java.util.Set;

import com.zjdiepu.www.base.enums.type.OperateType;
import com.zjdiepu.www.model.third.dto.AliDeliverInfoDetail;
import com.zjdiepu.www.model.third.ext.AliDeliverInfoDetailExt;

/**
 * 快递路径详情Service层操作<br/>
 * @author xiongxiaotun<br/>
 * @time 2017年04月18日 14时15分<br/>
 * @since 1.0<br/>
 */
public interface IAliDeliverInfoDetailService {
	/**
	 * 新增,更新和保存
	 * 
	 * @param AliDeliverInfoDetail 
	 * @param OperateType 操作类型 {@link OperateType}
	 */
	void saveUpdateAndDelete(AliDeliverInfoDetail aliDeliverInfoDetail,OperateType operType);
	
	/**
	 * 条件查询
	 * @date 2017年04月18日 14时15分
	 * @param aliDeliverInfoDetailExt
	 * @return
	 */
	List<AliDeliverInfoDetail> selectByExt(AliDeliverInfoDetailExt aliDeliverInfoDetailExt);
	
	/**
	 * 条件统计
	 * @date 2017年04月18日 14时15分
	 * @param aliDeliverInfoDetailExt
	 * @return
	 */
	int countByExt(AliDeliverInfoDetailExt aliDeliverInfoDetailExt);
	
	/**
	 * 主键查询
	 * @date 2017年04月18日 14时15分
	 * @param id
	 * @return
	 */
	AliDeliverInfoDetail selectById(String id);
	
	/**
	 * 根据主键清除空字段，设置值为null
	 * @date 2017年04月18日 14时15分
	 * @param fieldNames 字段名
	 * @param id 主键
	 */
	void clearEmpty(Set<String> fieldNames, String id);
	/**
	 * 精确统计(=)
	 * @author xiongxiaotun
	 * @time 2017年04月18日 14时15分
	 * @since 1.0
	 * @update
	 * @param sysPower
	 * @return
	 */
	int countRefined(AliDeliverInfoDetail aliDeliverInfoDetail);
	/**
	 * 精确查询(=)
	 * @author xiongxiaotun
	 * @time 2017年04月18日 14时15分
	 * @since 1.0
	 * @update
	 * @param aliDeliverInfoDetail
	 * @return
	 */
	AliDeliverInfoDetail selectRefined(AliDeliverInfoDetail aliDeliverInfoDetail);
	/**
	 * @author xiongxiaotun <br/>
	 * @Title repeat  <br/>
	 * @Description 判断是否重复 <br/>
	 * @param aliDeliverInfoDetail
	 * @return
	 * @version V1.0  <br/>
	 */
	boolean repeat(AliDeliverInfoDetail aliDeliverInfoDetail);
	/**
	 * 删除全部数据
	 * @author xiongxiaotun@126.com
	 * @time 2017年3月22日 下午8:42:43
	 * @param deliverInfoId
	 * @since 1.0.0
	 * @update
	 */
	void deleteByInfoId(String deliverInfoId);
	
	/**
	 * 批量添加记录
	 * @param aliDeliverInfoDetails
	 * @return
	 */
	int insertBatch(List<AliDeliverInfoDetail> aliDeliverInfoDetails);
}
